import java.util.Arrays;
import java.util.Stack;

public class MyStack {
    private int[] elem;
    private int usedSize;
    // 初始化
    public MyStack(){
        this.elem = new int[5];
    }


    // 放数据
    public void push(int val){
        if(ifFull()){
            elem = Arrays.copyOf(elem,2*elem.length);
        }
        elem[usedSize]=val;
        usedSize++;
    }
    // 判断栈是否满了
    public boolean ifFull(){
        return usedSize==elem.length;
    }
    // 删除栈顶元素
    public int pop(){
        // 1.判断栈是否为空
        if(empty()){
            // 为空抛出异常
            throw new StackEmptyException("栈为空！");
        }
        // 2.开始删除，返回栈顶数据
        return elem[--usedSize];
    }
    public boolean empty(){
        return usedSize==0;
    }
    // 输出栈顶元素
    public int peek(){
        // 1.判断栈是否为空
        if(empty()){
            // 为空抛出异常
            throw new StackEmptyException("栈为空！");
        }
        // 2.开始返回数据
        return elem[usedSize-1];
    }



}
